package com.ruoyi.app.controller;

import com.ruoyi.app.domain.AppActivities;
import com.ruoyi.app.service.IAppActivitiesService;
import com.ruoyi.common.core.controller.BaseController;
import com.ruoyi.common.core.domain.AjaxResult;
import com.ruoyi.common.core.page.TableDataInfo;
import com.ruoyi.common.exception.file.FileNameLengthLimitExceededException;
import com.ruoyi.common.exception.file.FileSizeLimitExceededException;
import com.ruoyi.common.exception.file.InvalidExtensionException;
import com.ruoyi.common.utils.file.FileUploadUtils;
import com.ruoyi.common.utils.file.MimeTypeUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;

import java.util.List;

@RestController
@RequestMapping("/api/activities")
public class AppBaseController2 extends BaseController {
    @Autowired
    private IAppActivitiesService appActivitiesService;

    /**
     * 查询活动管理列表
     */
    @GetMapping("/list")
    public AjaxResult ActivitiesList(AppActivities appActivities)
    {
        startPage();
        List<AppActivities> list = appActivitiesService.selectAppActivitiesList(appActivities);
        return AjaxResult.success(list);
    }
    /**
     * 根据id查询活动详情
     */
    @GetMapping("/{id}")
    public AjaxResult getActivitiesById(@PathVariable("id") Long id)
    {
        AppActivities appActivities = appActivitiesService.selectAppActivitiesById(id);
        return AjaxResult.success(appActivities);
    }
    /**
     * 发布活动
     */
    @PostMapping("/publish")
    public AjaxResult publishActivities(@RequestBody AppActivities appActivities)
    {
        int rows = appActivitiesService.insertAppActivities(appActivities);
        if (rows > 0)
        {
            return AjaxResult.success();
        }
        return AjaxResult.error();
    }
    /**
     * 活动封面图片上传
     */
    @PostMapping("/upload")
    public AjaxResult uploadActivitiesCoverImage(@RequestParam("file") MultipartFile file) {
        try {
            // 1. 校验文件是否为空
            if (file.isEmpty()) {
                return AjaxResult.error("请选择要上传的图片文件");
            }

            // 2.上传图片
            String imageUrl = FileUploadUtils.upload(
                    FileUploadUtils.getDefaultBaseDir(),
                    file,
                    MimeTypeUtils.IMAGE_EXTENSION
            );

            // 3. 上传成功，返回图片访问URL（如 /profile/upload/20231106/xxx.jpg）
            return AjaxResult.success("上传成功", imageUrl);

        } catch (FileNameLengthLimitExceededException e) {
            // 文件名过长（Ruoyi默认限制100字符）
            return AjaxResult.error("文件名长度不能超过100个字符");
        } catch (FileSizeLimitExceededException e) {
            // 文件大小超限（Ruoyi默认限制50MB）
            return AjaxResult.error("文件大小不能超过50MB");
        } catch (InvalidExtensionException e) {
            // 文件格式不支持（非图片类型）
            return AjaxResult.error("不支持的文件格式，请上传jpg、png、webp等图片");
        } catch (Exception e) {
            // 其他异常（如路径创建失败、权限不足）
            return AjaxResult.error("上传失败：" + e.getMessage());
        }
    }
}
